package cn.kgc.crowdfundingadmin.controller;

import cn.kgc.crowdfundingadmin.common.CrowdFundingConstant;
import cn.kgc.crowdfundingadmin.common.ResultEntity;
import cn.kgc.crowdfundingadmin.pojo.Admin;
import cn.kgc.crowdfundingadmin.service.Adminservice;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;

@Controller
public class AdminController {
    @Resource
    Adminservice adminService;
    @RequestMapping(value = "/admin")
    @ResponseBody
    public Admin getByID(Integer id){
        Admin admin=adminService.selectByid(id);
        return admin;
    }



    @RequestMapping("/admin/do/login")
    public String doLogin(@RequestParam("loginAcct") String loginAcct,
                          @RequestParam("userPswd") String userPswd,
                          Model model,
                          HttpSession session){
        Admin admin=adminService.login(loginAcct,userPswd);
        if(admin!=null){//登陆成功
            session.setAttribute(CrowdFundingConstant.ATTR_NAME_LOGIN_ADMIN,admin);
            return  "redirect:/admin/to/main/page.html";
        }else{//登陆失败
            model.addAttribute(CrowdFundingConstant.ATTR_NAME_MESSAGE, CrowdFundingConstant.MESSAGE_LOGIN_FAILED);
            return "admin-login";
        }
    }

//分页查询
@RequestMapping("/admin/query/for/search")
public String queryForSearch(  @RequestParam(value="pageNum", defaultValue="1") Integer pageNum,
                               @RequestParam(value="pageSize", defaultValue="5") Integer pageSize,
                               @RequestParam(value="keyword", defaultValue="") String keyword,
                               Model model){
    PageInfo<Admin> pageInfo = adminService.queryForKeywordSearch(pageNum, pageSize, keyword);
    model.addAttribute(CrowdFundingConstant.ATTR_NAME_PAGE_INFO, pageInfo);
    System.out.println(pageInfo.toString());
    return "admin-page";

}




    //局部异常处理
    @ExceptionHandler(value=Exception.class)
    public String catchException(Exception exception,Model model) {
        model.addAttribute(CrowdFundingConstant.ATTR_NAME_ERROR_MESSAGE, exception);
        return "system-error";
    }

//退出
    @RequestMapping("/admin/logout")
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/index";
    }

//删除 批量删除
@ResponseBody
@RequestMapping("/admin/batch/remove")
public ResultEntity<String> batchRemove(@RequestBody List<Integer> adminIdList) {
    try {
        adminService.batchRemove(adminIdList);
        return ResultEntity.successWithoutData();
    }catch(Exception e) {

        return ResultEntity.failed(null, e.getMessage()); //resule message data

    }

}
//新增
    @RequestMapping("/admin/save")
    public String saveAdmin(Admin admin) {
        adminService.saveAdmin(admin);
        return "redirect:/admin/query/for/search";
    }

   //打开修改页面
    @RequestMapping("/admin/to/edit/page")
    public String toEditPage(@RequestParam("adminId") Integer adminId, Model model) {
        Admin admin = adminService.getAdminById(adminId);
        model.addAttribute(CrowdFundingConstant.ATTR_ADMIN, admin);
        return "admin-edit";
    }


    //修改
    @RequestMapping("/admin/update")
    public String updateAdmin(Admin admin,Integer pageNum) {
        try {
            //修改用户
            adminService.updateAdmin(admin);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //保存当前页面 跳转页面
        return "redirect:/admin/query/for/search?pageNum="+pageNum;
    }

}
